/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.mala.entity;

import br.jm.mala.util.ConfiguraCampoAnnotation;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;

/**
 *
 * @author joao
 */
@Entity
@Table(name = "Suc_mala", catalog = "mala", schema = "dbo")
public class Sucmala implements Serializable {
    private static final long serialVersionUID = 7750995148513172324L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_suc", nullable = false)
    private Integer idSuc;
    @Size(max = 30)
    @Column(name = "Suc", length = 30)
    private String suc;
    @Size(max = 40)
    @Column(name = "Fantasia", length = 40)
    private String fantasia;
    @Size(max = 30)
    @Column(name = "numero", length = 30)
    private String numero;
    @Size(max = 90)
    @Column(name = "complemento", length = 90)
    private String complemento;
    @Size(max = 60)
    @Column(name = "Contato", length = 60)
    private String contato;
    @Size(max = 30)
    @Column(name = "Telefone", length = 30)
    private String telefone;
    @Size(max = 10)
    @Column(name = "Ramal", length = 10)
    private String ramal;
    @Size(max = 90)
    @Column(name = "RazSoc", length = 90)
    private String razSoc;
    @Size(max = 30)
    @Column(name = "TeleLoja", length = 30)
    private String teleLoja;
    @Column(name = "Item")
    private BigInteger item;
    @Column(name = "Entrega")
    @Temporal(TemporalType.TIMESTAMP)
    private Date entrega;
    @Size(max = 30)
    @Column(name = "CGC", length = 30)
    private String cgc;
    @Size(max = 20)
    @Column(name = "IE", length = 20)
    private String ie;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "codLogradouro.codBairro.dscBairro", campo = "dsc_bairro", nomeTabela = "suc_mala", nomeTabelJoin = "cep_bairro")
    @Size(max = 15)
    @Column(name = "Fax", length = 15)
    private String fax;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "codLogradouro.codBairro.codCidade.dscCidade", campo = "dsc_cidade", nomeTabela = "suc_mala", nomeTabelJoin = "cep_cidade")
    @Column(name = "Area", precision = 18, scale = 2)
    private BigDecimal area;
    @Column(name = "Obs", length = 8000)
    private String obs;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "codLogradouro.codBairro.codCidade.codUf.codUf", campo = "cod_uf", nomeTabela = "suc_mala", nomeTabelJoin = "cep_uf")
    @Size(max = 50)
    @Column(name = "Email", length = 50)
    private String email;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "idAtividade.codMix", campo = "codMix", nomeTabela = "suc_mala", nomeTabelJoin = "atividade")
    @Size(max = 50)
    @Column(name = "Email2", length = 50)
    private String email2;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "idAtividade.descMix", campo = "descMix", nomeTabela = "suc_mala", nomeTabelJoin = "atividade")
    @JoinColumn(name = "id_atividade", referencedColumnName = "id_atividade")
    @ManyToOne
    private Atividade idAtividade;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "idCategoria.dscCategoria", campo = "dsc_categoria", nomeTabela = "suc_mala", nomeTabelJoin = "categoria")
    @JoinColumn(name = "id_categoria", referencedColumnName = "id_categoria")
    @ManyToOne
    private Categoria idCategoria;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "idGrupo.dscGrupo", campo = "dsc_grupo", nomeTabela = "suc_mala", nomeTabelJoin = "categoria_grupo")
    @JoinColumn(name = "id_grupo", referencedColumnName = "id_grupo")
    @ManyToOne
    private CategoriaGrupo idGrupo;
    @ConfiguraCampoAnnotation(tipo = "String", pesquisa = "codLogradouro.dscLogradouro", campo = "dsc_logradouro", nomeTabela = "suc_mala", nomeTabelJoin = "cep_endereco")
    @JoinColumn(name = "cod_logradouro", referencedColumnName = "cod_logradouro")
    @ManyToOne
    private CepEndereco codLogradouro;

    public Sucmala() {
    }

    public Sucmala(Integer idSuc) {
        this.idSuc = idSuc;
    }

    public Integer getIdSuc() {
        return idSuc;
    }

    public void setIdSuc(Integer idSuc) {
        this.idSuc = idSuc;
    }

    public String getSuc() {
        return suc;
    }

    public void setSuc(String suc) {
        this.suc = suc;
    }

    public String getFantasia() {
        return fantasia;
    }

    public void setFantasia(String fantasia) {
        this.fantasia = fantasia;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getRamal() {
        return ramal;
    }

    public void setRamal(String ramal) {
        this.ramal = ramal;
    }

    public String getRazSoc() {
        return razSoc;
    }

    public void setRazSoc(String razSoc) {
        this.razSoc = razSoc;
    }

    public String getTeleLoja() {
        return teleLoja;
    }

    public void setTeleLoja(String teleLoja) {
        this.teleLoja = teleLoja;
    }

    public BigInteger getItem() {
        return item;
    }

    public void setItem(BigInteger item) {
        this.item = item;
    }

    public Date getEntrega() {
        return entrega;
    }

    public void setEntrega(Date entrega) {
        this.entrega = entrega;
    }

    public String getCgc() {
        return cgc;
    }

    public void setCgc(String cgc) {
        this.cgc = cgc;
    }

    public String getIe() {
        return ie;
    }

    public void setIe(String ie) {
        this.ie = ie;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public BigDecimal getArea() {
        return area;
    }

    public void setArea(BigDecimal area) {
        this.area = area;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmail2() {
        return email2;
    }

    public void setEmail2(String email2) {
        this.email2 = email2;
    }

    public Atividade getIdAtividade() {
        return idAtividade;
    }

    public void setIdAtividade(Atividade idAtividade) {
        this.idAtividade = idAtividade;
    }

    public Categoria getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(Categoria idCategoria) {
        this.idCategoria = idCategoria;
    }

    public CategoriaGrupo getIdGrupo() {
        return idGrupo;
    }

    public void setIdGrupo(CategoriaGrupo idGrupo) {
        this.idGrupo = idGrupo;
    }

    public CepEndereco getCodLogradouro() {
        return codLogradouro;
    }

    public void setCodLogradouro(CepEndereco codLogradouro) {
        this.codLogradouro = codLogradouro;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idSuc != null ? idSuc.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Sucmala)) {
            return false;
        }
        Sucmala other = (Sucmala) object;
        if ((this.idSuc == null && other.idSuc != null) || (this.idSuc != null && !this.idSuc.equals(other.idSuc))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.jm.mala.entity.Sucmala[ idSuc=" + idSuc + " ]";
    }
    
}
